//
// Created by PC on 2023/11/7.
/*OJ: http://ybt.ssoier.cn:8088/problem_show.php?pid=1320
 * OJ: https://www.luogu.com.cn/problem/P1031
 * 通过
 * 1320：信息学奥赛一本通【例6.2】均分纸牌(Noip2002)

【【贪心】均分纸牌】 https://www.bilibili.com/video/BV1PK411y74A/?share_source=copy_web&vd_source=039990b6433b5af9bd2905234cc47ac6
时间限制: 1000 ms         内存限制: 65536 KB
【题目描述】
有n堆纸牌，编号分别为 1，2，…,n 。每堆上有若干张，但纸牌总数必为n 的倍数。
 可以在任一堆上取若干张纸牌，然后移动。
移牌规则为：在编号为1 的堆上取的纸牌，只能移到编号为 2 的堆上；
 在编号为 n 的堆上取的纸牌，只能移到编号为n−1 的堆上；
 其他堆上取的纸牌，可以移到相邻左边或右边的堆上。
现在要求找出一种移动方法，用最少的移动次数使每堆上纸牌数都一样多。
例如 n=4 ，4 堆纸牌数分别为：  ①9　②8　③17　④6
移动3次可达到目的：
从 ③ 取4张牌放到④（9 8 13 10）->从③取3张牌放到 ②（9 11 10 10）-> 从②取1张牌放到①（10 10 10 10）。
【输入】
n （n 堆纸牌，1≤n≤100 ）
a1 a2…an （n堆纸牌，每堆纸牌初始数，l≤ai≤10000 ）。
【输出】
所有堆均达到相等时的最少移动次数。
【输入样例】
4
9 8 17 6
【输出样例】
3
 ------------------
 in:
 5
50 10 30 40 20
 out:
 2
 ----------------
 in:
 10
14 1 10 11 9 10 13 10 11 11
 out:
 9
 * */
//


#include <iostream>

using namespace std;

int main()
{
    int n = 4, average = 0, ret = 0;
    cin >> n;
    int cards[n];
    for (int i = 0; i < n; ++i)
    {
        cin >> cards[i];
        average += cards[i];
    }
    average /= n;
    for (int i = 0; i < n; ++i)
    {
        cards[i] -= average;
    }
    for (int i = 0; i < n - 1; ++i)
    {
        if (cards[i] == 0)
            continue;
        cards[i + 1] += cards[i];
        ++ret;
        cards[i] = 0;

    }
    cout << ret;
    return 0;
}